#ifndef __COMPONENT_H__
#define __COMPONENT_H__

#include "Object.h"

#include <string>

using namespace std;

typedef string ComponentType;
typedef string FamilyType;

class Object;

class Component
{
protected:
	Object*			m_ObjectOwner;				// The owner of this component
	ComponentType	m_compType;					// Type of a component
	FamilyType		m_familyType;				// Component family 
public:
	Component(){};
	virtual ~Component(){};

	virtual FamilyType getFamilyType(){ return m_familyType; };
	virtual ComponentType getComponentType(){ return m_compType; };
	virtual void setFamilyType(FamilyType type){ m_familyType = type; };
	virtual void setComponentType(ComponentType type){ m_compType = type; };
	virtual void setObjectOwner(Object* obj){ m_ObjectOwner = obj; };
	virtual void setup()=0;
	virtual void update()=0;
};

#endif